package com.zdxlz.desensitize.constant;

/**
 * 脱敏类型枚举类
 */
public enum DesensitizeType {
    /**
     * 保留第一位
     */
    KEEP_FIRST,

    /**
     * 去除中间1/3,手机号规则
     */
    REMOVE_MIDDLE,

    /**
     * 变成空字符串
     */
    EMPTY,

    /**
     * 全部变成*
     */
    TO_STARS,
    
    /**
     * 变成****
     */
    TO_FOUR_STARS,

    /**
     * 手机号规则
     */
    PHONE,

    /**
     * 电子邮箱规则
     */
    EMAIL,

    /**
     * 身份证规则
     */
    IDCARD,

    /**
     * 军官证规则
     */
    OFFICEPASS,

    /**
     * 地址规则
     */
    ADDRESS,

    /**
     * 姓名规则，大于等于3位遮掩中间，小于3位保留一位
     */
    NAME,

    /**
     * 不脱敏
     */
    NOT,

    /**
     * 拓展方法
     */
    EXTEND;

    DesensitizeType() {
    }

    /**
     * 通过枚举名(不限制大小写字母)获取枚举类
     */
    public static DesensitizeType getByString(String str) {
        if (null == str) {
            return null;
        }
        try {
            return Enum.valueOf(DesensitizeType.class, str.toUpperCase());
        }catch (IllegalArgumentException e) {
            return null;
        }
    }
}
